package sms

import (
	"github.com/cloopen/go-sms-sdk/cloopen"
	"go.uber.org/zap"

	"mxshop-api/user-web/global"
)

type RongLianSMS struct {
	account    string
	token      string
	appID      string
	templateID string
}

func NewSend() *RongLianSMS {
	return &RongLianSMS{
		account:    global.ServerConfig.SMSConfig.AccountSID,
		token:      global.ServerConfig.SMSConfig.Token,
		appID:      global.ServerConfig.SMSConfig.AppID,
		templateID: global.ServerConfig.SMSConfig.TemplateID,
	}
}

func (r *RongLianSMS) Send(phone string, data []string) (err error) {
	cfg := cloopen.DefaultConfig().
		// 开发者主账号,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
		WithAPIAccount(r.account).
		// 主账号令牌 TOKEN,登陆云通讯网站后,可在控制台首页看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN
		WithAPIToken(r.token)

	sms := cloopen.NewJsonClient(cfg).SMS()

	// 下发包体参数
	input := &cloopen.SendRequest{
		// 应用的APPID
		AppId: r.appID,
		// 手机号码
		To: phone,
		// 模版ID
		TemplateId: r.templateID,
		// 模版变量内容 非必填
		Datas: data,
	}

	// 下发
	resp, err := sms.Send(input)
	if err != nil {
		return err
	}

	zap.L().Info("SMS Response MsgID", zap.String("MsgID", resp.TemplateSMS.SmsMessageSid))
	return nil
}
